package com.wyx.suanfa;

import java.util.HashMap;
import java.util.Map;
import java.util.PriorityQueue;

/**
 * @author 王艺锡
 * @version 1.0
 */
public class topKFrequent {
    //给你一个整数数组 nums 和一个整数 k ，请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。
    public static void main(String[] args) {
        Map<Integer,Integer> map = new HashMap<>();
        for (Map.Entry<Integer, Integer> integerIntegerEntry : map.entrySet()) {
        }
        PriorityQueue<int[]> queue = new PriorityQueue<>((pri1, pri2) -> pri1[1] - pri2[1]);
    }
}

/*
* class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        Map<Integer,Integer> map = new HashMap<>();
        for(int num : nums){
            map.put(num,map.getOrDefault(num,0) + 1);
        }
        //建立小顶堆，大小为k
        PriorityQueue<int[]> queue = new PriorityQueue<>((pri1,pri2) -> pri1[1] - pri2[1]);
        for(Map.Entry<Integer,Integer> entry : map.entrySet()){
            if(queue.size() < k){//如果队列大小小于k
                queue.add(new int[]{entry.getKey(),entry.getValue()});
            }else{
                //比较当前元素是否大于堆顶元素
                //如果大于则弹出堆顶元素，添加新元素
                if(entry.getValue() > queue.peek()[1]){
                    queue.poll();
                    queue.add(new int[]{entry.getKey(),entry.getValue()});
                }
            }
        }
        int[] result = new int[k];
        for(int i = 0;i<k;i++){
            result[i] = queue.poll()[0];
        }
        return result;
    }
}*/
